In [13]:
import pandas as pd
import numpy as np
In [55]:
# Podatke preuzeti sa https://dice-database.org/downloads
data_B = pd.read_csv('B_CELL_NAIVE_TPM.csv')
data_M = pd.read_csv('MONOCYTES_TPM.csv')
In [61]:
data_T = pd.read_csv('CD4_NAIVE_TPM.csv')
In [58]:
def preprocess(data, class_label):
    X = data.iloc[:, 3:]
    X = X / X.sum() * 1000000
    
    new_names = []
    for value in data.iterrows():
        new_names.append(value[1].Feature_name.split('.')[0])
    
    class_labels = np.array([[f'{class_label}' for _ in range(X.shape[1])]])
    labels_df = pd.DataFrame(data = class_labels, columns = X.columns)
    
    data_tmp = X.copy()
    data_tmp = data_tmp.append(labels_df)
    
    data_T = data_tmp.T

    new_cols = new_names + ['class']
        
    new_df = pd.DataFrame(data=data_T.values, columns=new_cols)
    
    return new_df
In [59]:
data_B_prep = preprocess(data_B, 0)
data_M_prep = preprocess(data_M, 1)
In [62]:
data_T_prep = preprocess(data_T, 2)
In [60]:
data_B_prep.to_csv('DATA_B.csv')
data_M_prep.to_csv('DATA_M.csv')
In [63]:
data_T_prep.to_csv('DATA_T.csv')
In [ ]:
agl = AgglomerativeClustering(n_clusters=3)
agl.fit(X)
In [ ]:
silhouette_score(X, agl.labels_)
In [ ]:
homogeneity_score(y.ravel(), agl.labels_)
In [ ]:
linked = linkage(X, 'ward')

labelList = agl.labels_

plt.figure(figsize=(10, 7))
dendrogram(linked,
            orientation='top',
            labels=labelList,
            distance_sort='descending',
            show_leaf_counts=True)
plt.show()